<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <meta name="theme-color" content="#3367D6"/>
  <link rel="apple-touch-icon" href="/icons-192.png">
  <link rel="manifest" href="/manifest.json">
  
  <meta name="generator" content="Hexo 6.3.0">

  

  

  
    <meta name="author" content="QAQ">
  

  

  

  <title>vue3使用技巧 | QAQ</title>

  

  
    <link rel="shortcut icon" href="/blog/favicon.ico">
  

  <!--mathjax latex数学公式显示支持-->
  
  

  
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/typeface-source-code-pro@1.1.13/index.min.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.7.0/build/styles/monokai.min.css">
  

  

  
<link rel="stylesheet" href="/blog/css/style.css">

</head>
<body>
  <div class="root-container">
    
<!-- header container -->
<header class="header-container post">
  
    <div class="post-image" style="background-image: url(https://qiniu.sukoshi.xyz/src/images/68686407_p0.jpg)"></div>
  

  <!-- navbar -->
<nav class="navbar">
  <div class="navbar-content">
    <!-- logo -->
    <div class="navbar-logo">
      <a href="/blog/">
        
          QAQ
        
      </a>
    </div>
    <!-- link -->
    <div class="navbar-link">
      <div class="navbar-btn">
        <div></div>
        <div></div>
        <div></div>
      </div>
      <ul class="navbar-list">
        
      </ul>
    </div>
  </div>
</nav>

  
  

  
  

  
  

  
  

  
  
    <div class="header-content">
      <div class="post-text layout-block">
        <div class="layout-margin">
          <h1 class="title-wrap">vue3使用技巧</h1>
          <h2 class="title-sub-wrap">
            <strong>QAQ</strong>
            <span>发布于</span>
            <time  class="article-date" datetime="2024-01-25T08:47:00.000Z" itemprop="datePublished">2024-01-25</time>
          </h2>
          
            <h2 class="last-time">
              <span>最后更新于</span>
              <time  class="article-updated" datetime="2024-04-09T01:08:52.211Z" itemprop="dateUpdated">2024-04-09</time>
            </h2>
          
          
          <ul class="wrap-list dark">
  
</ul>
          <ul class="wrap-list dark">
  
    <li><a href="/blog/tags/vue/">🏷️ vue</a></li>
  
</ul>
        </div>
      </div>
    </div>
  

  
  
  
</header>

    <!-- 文章 -->

<!-- 文章内容 -->
<div class="body-container">
  <article class="content-container layout-block post-container">
    <div class="article-info">
      
      
      
      
      <section class="article-entry markdown-body layout-margin content-padding--large soft-size--large soft-style--box">
        <div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉，这个密码看着不太对，请再试试。" data-whm="抱歉，这个文章不能被纠正，不过您还是能看看解密后的内容。">
  <script id="hbeData" type="hbeData" data-hmacdigest="af5278556e1283d6c19b92c3953f7ef2f8b0f546284f1c6f9f82f25090db3c4a">f5d7027a76d40f8b4fe5a79716a716fb2e3f49ee84cb217f92cc109ad4d8682f0f6abb7dabb29baab7c05ff9a0bb4f5300f3d5f453bac2939effe2cec2ef868c111ad2872b63ee348b0234cc09a4c308320529e8535fb7bd68275b0f0e1f9fc4ba9cb15fa8c0a3e10f97e2570980e901220e3fe67141749cf08f60f4315608187a74c32f17be9413c9363940b72a4bfea1b2430e7b90c2da3952a2a24b09ea812371bcf97b48532d535ed3dbf944edfb9dabbb9ce4d5f7d7a37bf10c611af4d00cd3b2b52249777fb487685006ce064d0cd52809ef85051d87379a234189f4c9eac42835736bde0c3429c39756541fa0838a6bff1d865e74228ee6ca448561abd5b248205df285994fa5f98e21fd167422d30efb9dcaa5900657a9f6349ab23923d760bb4936b782b1abb4145792a0e20cd471e44a6a7f57150c16c9806221d784356eb481142138854f00f94f3ab53cb01a19653192acde0c190f8f7c92886537586403876a8b3ce92e8919d42fae90e1bd88a7b7320adf649e165c4ca77727af41479c4c9fce45b49eb881806428f9a438ab6bd7dc228b0c7b10d5a7d1ef1d4261fbf843152793c5f516ffa916ea462731bc2d9836408ee5b1115c08b6b02bc714b8aa806bedf22b8a3832643b649214da0fe082e1c1566b7c7c5e8378617105536b5aa99f6347908125eacea288d84019a0291c26a998921922b4e9df556ac15d9a262e8cc022db4f84df8f756e817fe5484ea0a8e7ca0e647aefd75b20ad0d5a5019633c03d346f385530d374ecd03319b161941c75dde1b71a72513fd0eaaa555a9f5988fc2c563af2f038b95e7bd165351a55499ca0a577dee483e8af456c3c9d6aa2ef9ca17726f05e5e561c21783041fb0f8f764e22eb9d5ba03cbc80cba9f8231639ccb8f18738ac825650015fcfc031384cc938c1910467ddc461be5795dd563315c9c2ee0db31962a2e51f03bc4f55025f192098cd169642a269b6bb3657e373dedbab42b5b973864edd740086c9b00e17a41250c9d0cd74e2c7e674d061147ad22b260544012c5d7b099418c85425a867196296c05e3d256a1a36b8a8855544b0ed7bc015b3aa98b3109bd87716c92a83216f22597b64695e2bfb4757f1ee029b5a06a1bddedc3532913040fe46a528fc9f283b473c90fb471047f81a7c4a245ca5ccb48db6db9afb7600fd38234bc8315643e4686361c96b5c3f81e95d29129a1f5602f961c97900b589b88101ba5b2e048e7a1cd6c04dc7bc508a8d091db4f8ffa7f23df641140466b249caebec16944f2b2b6a598e355bc17f4e0522282d950d8666b3c51547b1064112ccb818f3bfb08ba4baf2b1be61d37dd753ae9cf1a68379f7fe6bf2c40edf391d4776975e16686d961f1ea808d11db25bdb45db8a3b0aad476129e71c9a78ce697a723bf43b347de05ba1dce135631da5371d2f01d7e3ab4b1e3f18c1205c62b1d0106e3899e459f5d9a6cef5b7257ee49688d4d083ab8416d4b9073d69e81d51a3faaec6d9657ef942610eb776917dda1a5001a44af46aaa249946246fa3ad1963c1d719e4cf098a6f416f876a929eadf830e57659534ab751b7d717a4da78bd79bc7bac252c0feeb88dd8c50f73d2f56ec19501f51f46bc874b585c6a88a51b885df6067d40464b61e311951b9a508f2a19193d5a4a53d0c19935a4ab8552cbb1f5d4f7f01518cc9c4da3a05f5c7fa3644e9c10e328aa6d0dd85ea14bb6be76d08b3bd04bb6dfbb41b449a1561e32a38b0a1cb6635490dc5ff7623a1ac90213689ed4db5d42f2b94a0ba418caffd8d8e9b844b21ef37303c7ae897faaa3734849cf80a59f10782fbcb4e0f737b551890397e7732ed00561e0ff6e10c357cdb27ed80cc59db33eee73e64f7d034b0f6b9105d0941836d763231271261f037d6bc91e63f8896e9cacc5e12d203f83cc7bb2537b3cab147d411ce5cfbbca8cc0fa133c2529f6294a823049d3477a8cdc012e89cc4d69177e9dd34080ea53e2742b0c479874411c96a6438313c74db9e2e726d791b00b25dc9f37cbbfdd6eeb70701db441322fe2503351c90f4424454033939546978da7c7589b875435b82dd83fe098735df213b940a38de7f3195e5ff421a033401ad728654551c49925750108a8d0adbb85c51951f06e1d95d56f6c06194de8db84b8a67730f0f1eb3bd9b41613b241391088ebf8f880f50b1cffff20c0acef28a47849d820b9b78d65f807e45a7015749a53abca62f6474ea306c3b15948457fd213c8c3caeb8f4c904f432b59ca8e5bc2bd0495a4e1ff921f86daaa8a6e7acbee6391a6be6210e9859dbab477829ab7ff5eff181d81c68f3587f8b0aa8757e8a69ae77935b7239c143f2cabad7f5ccfeae2ce4c64810e31ec2f4d5f2b2704eaf4358beec962ee6c86735a479a83867f7af3d0b719f36bc3d5737b02d35293256833ec19c29fd2aea4c093e88db174a470ba8fcd56f7dd102f27ff54e81907484f5415de7b701fdd2a68ae39974051ff9c8add07927569290a7d0fa95b6038adf1e70832030b9b8d91bcaa0024840a3aab563fbb8041ef9b9ecb905394ca9c180e0dbbdd39a84c884992532c24674dace6c41e769b20a7ca61a49c9bfde7b61bdecc4a26de3fcd956457733fec48b288a06e424b3793b28af20cd7a6ff1a99acfb0486a6d829c812fe94a068eeea75e2060c2973500012329da4d5bf97000cb6daf0e115ea5349aaa6fb926a3bbeaf76a03bb8d8f230e2c58abcecf2752cc3672a6d4a498281d47e007cd34904f78bdf5b913654fd87694acdb32964e53fc6cd2e58dfccd357d7c0bd069d68f92af6140d01c040c8b92745297633c3a8f8861961461890a946e061beee8b074aaf708ea0d6a302e5f2384c1d6d7f951f234672641e1fd9bd6d0130be5b9e572009dfe384aaac59f47b8454cc4427fd63bddef34acb43ef4ed402e8f8322b3bf181cd920ca070bf5dcd736831032b7194f66d2184c07cdfffc27d1d91676a1665ab287b99a6982e61e45ec84b64cf3d6d58d574bc6591f6f2779ddaaa78b174d0f56abe995fa5cd94f6d815d5c30a4af74acdfaea1eba9dcbdee0f2b6b52d1763eb13acc6c3f31177095627a7d2e7c1befd1e2b2c7d85e3efc7e4f2f94407315de34c9884b30909d3580d3bc14267e7df0eaa44b3c64ae1c36c5c42b2292f98629628a6a2b7330b099cb5fc1218e70487b085a00e3bb069858048b4aae83c4cb57db1cb6cddbaee4b0f7fd85ae2170a125cf102ac5f496b957cec9851ac0455387434ded1874418fee44780211532c743add68b4cc37bc8b44ba34b36c7ac7859a974d55870d0f4f66d2f777c68ce43bfe76f1b1cd3fde9536c593781d4f8b9418858145f8e973d0f2ba25bf1ac0680f3a30feb6fef1bf9a6b1c603206aab40646b882b41d9b643144585c686f85e860e45b1af856cdecffeef5c09a063f23f32caffce5ac42661e0146b5841beb6a169b146498cc18fba3f0d0752d878faf55694a04bad3afe1c17b948b82bbe80e51adf03ed8891b4bea6877f3df678de2eeee56d590bd9220732366c0255659afd166dde8a198ec95763f00cf2795cf045a899587c0ad452730fbc5ccda0e48564f991efb61427d6c65ddee7966f6b7cf9115f27df36355ea348d1a12105db301a69219a0fc6398f1c85aedd38bb049f689f54c2e62e734a74e4d1c3149c8554d87d609253edd2a0eb46ddf4aa96645f33dd809aa0cbc074bde837bc8c0867e0ae07074b5666f84d88e0b67555216b96460fcb02b21b3bc5d8b173e1a45a814d345ebd6ddd42a2903d929233041abb30a07e92e3c684779c3029c7ee1cd998fb2de2b75d74587048e74b678a7261439874b7c4061d00f2fbcd0589b970453c30d1b10ab54a02f19cc1ec77c7f445c60731284cbd71b92b8cf1906c3737159a77cacea7ac6bc8e94f3df1aa25fb5b81821209bdf389aa0d331dec3838c23a54cef23b9b39cd237296d983bd142b0bf77cef1f6db95a6495d36ab49f9993e6e74d90b4f384bb242ee1c6639ea57601d9e822e6fcc18957bcedde06cd2ac23554c1e6bb17ef29ac928edd45e7b22820661ef785fd37e490460b1c283c8c036ba7e8ee59b924bf775a6981ff60c060e5e2973282ac7ea64e1244f6e4e5d2d04b205256cbed8a870d6833d84fca1a82d642340036b7e4626ed58b467e68a2d944fbf0fb4639e71eb8c728a0f4d5d704ee5791911d55b75a5905c540811dfa0e016c94cc60821fb62c14842b12ed3816b50a8b57c483e1f40cbcd020e6757d677a991c82c0cd00d29bc80af04773024bda91a883db1ddf7a8f5f2956b9f770d7a0200aa4afad6f339b434ac537eef7ad1b41b4767a3577817f64b6865ff87367243198eddb5ad3560dd193a9b87f3abbacdd3230547eaf2d8062e399363fc63a7fa82ea797126a994757c17e4712013eb5ce1c81b9ac46e677f67696d52ed70d00a5a98451b5ee72399cb815e6780387cf1704949e330a703565d3f322985affc3fff2fb4fa0c96c0ae170817e144dcde51a72c989f32cf9eb42cf3b5b94647c19740bd7723dce9decd06db363c702c2f4f3a20970bd02c6852705469c4f99efbea9ebcff5006ad63a289c141ba3df5f5f27e8ea6e8c92c0cd90c462c8a717858e39e4e80cdabb1ab1f2f55078cc26be269da4a37169721d05d496a78c5b9311589da96073f8438da8394e3d87d7de9ecceea77d0b83affc135c6eae5d11a9049ec3f92ba291df3eca7bbb15a07faf9ea7fb125035d4bda0d4ed9c8a893d7bb594b0624f30669f9d0f03392037db606f90667e2594866698f440dd8f4edce5b1992bb2c322b1b85492ed8a85a162da8fd76633e7e9a04e9098d17e76f1fe2d50615cad8174a19fc462bd745eabfcd53e8e7a4fc5ddb6ed61b722984a5337f719481ce7ded108b5a6df6c7c5e69c5a761d2be25d03cc48bbdcd8c5676c33d8a21cc1670e374d526bda6aec34e51d39d51bd9d98312d039c9a4dcbfe6a8a74c0dd160711e7a44de67372d6dc3d96d96132fe4d6424df30b6cc122f29a34badfbcc098ca425111ca21e545853bf7436e500d745c4bcbaba36c17ac21c421100df76bcdc31615a61f7a556ac67f29da9206d526304d2dea6fa857345b5eefb592b571f061b077a7c1b8277b5912e208044682ed6c4a799f3fd7913b0fe575d1f6d612b1cddc0959f0a845e1f40b230d71ccb7ae238200df39f7ce181b83705f1f270b8b8bb14ed027080ee2b69edb0ad2b9ca756586254540d009965b17dedd15c563570931e1e8e1e6120f113eb724100ccec300203172fd24d32919143dffdbea5bf0647332ac2c2597d57d01243f6f67d289643fb79af00d6f1c5823050330d7a00315817f0a278700008c579c2033827f70dca184b4d996e51b10d8916317d2917cba0ed3edeaad79ee462d888abf3539d698bc91eaa55920b7dd52cde00f43fd2a7d4e9a19747c53bbc656d36064f171d8b43b2ff3ed813bf1afa8c086d77f87c5133df262ca128562695a89ae8007f5dbd772daa4fb00b4240811ca5d2c0db0bc0b164ab1af87d59e308bacce9afe088032579041a03372cebf628c046353b4e017adeb08416ee37dd40129ecb10aab09fd7009c62229a25a04a427401b996b00631083f7c13d7bc959604323b2fa3d8dc095a7fe45c716c1ccdcc42bba40f486e8a2fb5b1f16b2c7f755801c2efcc9ac3b27ac77342990b506afa3c0316f8a94c4b4882fd1e739803004c215cbd9f10d14611eb60197caa64980d40a79cf6dba186471b9dd35e12b805c775faebd4ce7eb4a2d94f71d9fcb36109bf5df61f7ec369f8eb4b72ba03fe4680fe17b834d2a798359ecd7094821c70f63ac6a5a4d9659466a5fea62dd1765b453797a236bee0c06980188de1dfaf0b8dea07376d395917a17d7e263251d3cae708aaab4fe3ff0d63abd9e95f0a7240aa96ea6595a92db4a9b26ded8c279cadd2818137ff9d89a4b38e9925192318c81e68fa72b45b1eb5a716780fdcafbde95a009928dc57e422bd228151b8bdc1263775d73114c41df62767b282212dfc503e47182907e37cfeb1732f1dbfd158e0e1d1d6bce80e9508f5c166ac8b26e695c2159be73f020265fe7529444151fe41a2ba6bbd9ba13cb189c5b78008796db7587814567aee90a2882cf9f513d8b5f83160ecd3e0db595151f93b3a2435373b71dfa72bd853ea6f06d398ba6bf097a1842cf6fb5be58b7ccec98f3f18214908d05bcdf1c141f43b818b4877d4531417f692c04ace708e2f8e8641d3df0d92681acf3cb9e6f49dbb0852367cf9c52ea1d394ea6366b0d744a1cd286a5a5f31d606957ab84a94eb7c97a45d4ee9d0d552549b9dbbda7878b585109c7402a3cb809c2f0f496379c11f7425253ff5de3a40201ec355697e188d414610d81bce2cdf5b9894127a832413c5bea819f4c378692c2cd3472792d1f6fd2ec034007cc5f8508e4dfe8a6d7cead0b1dc0fd83e3271bd7075b59c260112519beeccd687acf014953fc7efebe98917edb858d0e0883316dfebff671017f42be3b19fa951cfff8d827568beaef86d2f917905cd5db13ce6d8e2386bfc609641eed3235b5f504efcd58f5c48d8c5af2a1d6de7d0bd702ccc9b7eb7c73985b3fb91235b6b592afc87823f6397766f1befc53d50b67bc09c0df0339d0f0cf5bcf83b1ba7281f8c2e352b4ee86c425c98bcdfaf3c025ec635b30a463beafb060a5fcf93e921f76f37be50b7bae2d351a82a55fbd25392622a5471a432de6d661edf61733cb51640d8071cfaab530ac9a31c14bded97f576b7393512788b47e69fd66bfd56b7cebcf28f4046ece3ef2aa73bf4fd441fc155ba2b7cc24fdf830f5d3ebc2c7769f2258e22c48c0fe33cec246660da48f5f359bc7bdf982d5f0959026851eacfa43fc7514a3951b3ddaacbfd452ee87f200fa09a7855cb1c9ba3d61b6576db51833e531b03ee8d08bb23c5332a018da76dc862237c05e066f99cc95a0c4d42afc38d1c567b19b9cddb182bedb2d60b97364cfa36a798aa487a0c4e35b2bd7d7528537aa8aa58892f615747277358abb50655abea5d6857efd28eada226402fe8002c73f61dd712e5acfcd4ba348a458362ac3bd5954ab6f385f9f1d8ff1a4c401cd2f686235f5cd0daa61d30951fa2b1e37f97306d004f1c26fd6bf19affd5507893fd9bebbf90d95c4e3b5ae27bd708cf43e050a457295291bf5ed5028e92c50e990f10b8ca84728a936849e167809bcea48b06f981a93899d0eb27fd27abd9777a3fbf2ee0a33bcaa4e921c03c894e6f68d6d325ade693dfa52e5d6ffdec70da9cadf470824ebc12b6435306ece474b5af991274f3143fdd0926a905c7e1cb67ae9a1737cfa0d3a125da6c1278633426f61c998f3fa9e57a9da68b347523d9e779dd425ed7eb11cd7b839ca2913499eb736257e272af6c2d896d3e32916596530e0d22e02765e65517a34306b45003f75c6e0bac2f3d01a91dc6462ab4936acb027a981c8678bc73fceb829c0f12d8fae67ffedd257842186605d8af3c2188d5683ad9e72285239ff2f903a28d7a2ce489ae83bda34c66c6608d26ff753d01aee9f9841d3ed874b1c2c50ac740244e5dc8193c6e82aa8aed4a6edfbdcf6a92430a03212a7d06f8ef3819d5d22dbcf0194f7462c2d2d40e0d8188880f1d70c2430d97dc510084a15af4728e986fa7044afe581e93f3a43646f7883726c7fabe9057c17ae79c6385f9732899fddf3ebcb34a2eb761c24507207bdda32a1711fc5596c0b49460f7379e3f5929bfac0bd226dfc82dd13e8b3aa1a169614e362d3f424398f102a77043a623b5fe179697eed12af13671b16a56cd356d7f7f4e5eb1630d06970813be6932dbae643f42317da04309ea45e337ef7f6b2cc0923ee7af8383df62ed67bdd38b0686c63b20072b31079a93b919260d9df282f4ba764204da3ef267aaa312d5d8543c1b444e9e98baeef2e59b012043a7b01ca95ce999256fd65c68302d81806f9f64db2bf56ebd9e022d324815ff999ed4b9330fe6bc83d688c4b5d1faa44d049a85b47469e1b5ec8e76da40aa239494c90838479f6e86d543863714230b2465388d1f7d2dcf12a1496fcbd08c4d38647af46935c8cde3767b7c16a807ac962b1ac74ede26b6c946752da55ca94649e812c107ad46877476f615e0b57085e3b42f654cbbedb60fa1bdcc387239e520ec346869eb7a7e239c2e5855d55668f2c7024977e687786b12a5117e263bd2f00a9126c794dddc2f1d29af0705cfb12e937e1c34329aa1cde2102d03b7c333ae564d5908f9032a112ddb382ef5d1cb62937e4a0892df4e717349428a2f02d479f5a4b86695c95f79324da193a3b07b070f831f3ee8dc3a59ae056357039d92e805acd0db43ddb158ca1bd9e821446d104efefa1d425d67ec1594e8f53072225140db35799ab7372675730abd822533aad719939390cd02182e60831a3fef8a3113691cd3f13ddca680c29f2540bd05b88a1cb6c68b39b41c905277e53ffcde714614ef8e6dd7f86578515b94196f2317eeb948fd4e416b8c4506bbfad234f87b03b45101e59e0640db98ea5a7d43f353397a0bd0a58a40d2c69e014b6631997dddd13f27a59694b6bc6c0c3db58b83913650f08f8d2ce2b95d199ff015af95223e6c11bfcc8f59a781f9172b4bd130e4d11ab9295684c0215a7e32703cf82c896948ed19dd351bbc433e03ab65953a6dfea0894ed468220c967a40d4870f33b3538113f73c1cee65e9a790e1e2d2aaf3c3319040e55cbbdc9aa03631b22f85ba591d535217997acd4ad5549eaddc33d5015c2bbcf4f4dda5e611ae17241c92368118bbb29835fd792bc507f339c35e56b8a5216b319217f144f328515fc6de2515b86a9dac012929a911f8d54c2e16cb81453265cf0544a0ff4289f8448a6e704bfb9fb911fc47c6b462423c0154888bdb98af3e233dae55ec6befd593e07ffb3a418392feb77b4c897065772907edeb30ae1942f40954c4ce4441feedd430c20ef91cad92cfbfe946654fa862a6cbba2cf1bbe8b77fd70c8d2eafe9bae40d2bf68fb835510c5d1debd769616e23c32d0215db66b33cb7ae99107c5593a65bb4120c9c9bf014460025100d6efbc5f16bc5dc6efdff839cba2056e6d90faf6ed9737b2304e58716c2e591834d759e605ade96390812db48b1692975d392b194997c5ed3114adeadfa8e2e07997a8959bcf70ae7d4fc8ad5e613d3f35f459a00fd0dff59a75ce5c7a1eb722a923f8901907ff6d81f1a496caae81686403b8284843693f77c0405fb06d2d7794d09fcd09f55f82c9727ce9fa5494b7b8504a6b2eb458ae4863912a248354b503c9aeb4930331ca05a7d9438949f9b0410e70c8b9b886f673e3f818a7db732aebb894282b46fe6fe2b59e2312d37beae7accca1e00e87452954331904c178d6728e9391c184d504257d20886bdcaa2869bb536040676b748ceea0eaf9638da3b52bc568f8e0db2e8bc3c9cfad84167368060f46360738fcf61942c39eab6f46530d076d71aab545d3111d5153034efa0ee7a5c73965197142bed975bacce907c442df330aa0f3f07aa9505ef5403645970bbafb0c55dacfaee72c09bca50f9800641ab92c393ff6082bd1801e82d7be901e033962e05b6b5399eb97de9a078a2f637de6b75d0df10b57ca1adfb952d467da7ec82a0ecced77f5ebca40a12cff1d1f79f434c10ba6fdb2f0f8736a6e933ac081ac68a32c9fae2acd89d7846c5180b3fccd04ec45b4f01badbc70141bf11c2160617c326584a28a8cc91850bbaa1bd690d26571fd06ecb02ff6ddbb269487402fbff9c6d9c1aae53ea348b5e4bddd36d7090cac5c2888885caae88b47c158114faf344c89b1360ca0c2300301ac9a019cdb056f8016764cb40b426ae04540c044ecce2ec3ad5b7900a0914feba92c78ec564310243c3cd2aad49beda240862d10e5b8c519a916324b4930d618031ac7ee08c300932f3d49f8e7de1f1d3be37551e5ce817ae51713758371fa23270ee2b3b2081f3885c11f4174d5a79df88832f652633b6638b63b013e50fe3cd5ce691bac178b9d5613537357a1ecfc8e603cfdc641d48df1b1c9ba75542c38546566572093dafa90a8aaa5c73d0bbb35d64718a14071ff5f6550515609adccbad536be443cfa9a5b0315f3762de1e2513fe3ff7aa235aaeebb568a2a84d9d9238ca3c8b28ef528075d27696e22c891baae0e6cdeefda063a37f6de4fdb86aaf59f9558e4ab881a406fbd80768c8881fd737fca36c6ff918f438ecd931d40ca6799b4a1857e193228cddee054ac022c888075669799f445410599117385275b4c8fb465c6974e966886765e7ae0afbbebcdfc16744429bf2f21910d5048652e9affd99805901cf340cc9e1156208a7cd7977164aee38aace92d858fd34a5142c798399695a215709a4c334dc6f2ca23e71c98160f502d3d189ae985dd36018bd9148d439e18e4b601dfe5621b227dab0939f35ef65331a97a6c00eff80c738c86f0f73539545dfb5660b755c00e59310ef30984d13df86176472bd363ba1b1667112962ab8cfddcccf93fd684ecde5a3a41db7b3bcfb087551af670b0a09de09bd43bb39473c04e181dab8f514caae97106122e492e78a68eefd5ffec5fd3ffc9169f248b8d767176de56ab3f79ad9b6b25a8d380f95c7bc648367760187539101c317b1287eccdfb4a7e189b8a1be30fefa8038ef6817cced9af35e9ecefb985cea7c84beb3b362ff1358f5be40f28d2e45d136f9b8c51cdb382de2fe69440a01a80b77481f4348b3600fbee53a027d2f2f6e199e9cb7b4fa429df9bae236f25b4c48c56668dd3645badfaeeec3d2912f6f753fa258962a11222f1279281b29c6a0a81825be4037786340a30306131e0dc61875a53e2f3635d735394bbcee35871874a1046dfae53c4976a93c4013a41e9c63c9d3c8cbb64bdc70efc3278bd4fa19bf2625fc86fdbaca363a6f76a0ebb13eb3aeb152e2ad390315634fb3cc45678c1f927f372a5e738577f6fd64a9179d18408042dfbea29faf5230b29498a94a13323e38f684622846cec7e3d854d985d4ed068715418b9aa7cd550ad7bf08bb34ed7a8e3089bfe5aec23852a4d4852b1ebfa9b0dec0c2d20e03e639ade518cdcdf5373a7f7069d2fe23939ccd20ee215b659640d1da5f0cd60ebbd92cc45f6b34a91eaaa1bf899349f7af9dbe1da1f6384e93ce767d5583d00156ddf406a5931889c44be5554937f82e766b3f7bbbedbac28c56802cb943070aed2320b39e214c51fbd8da72a844749d2cf18a19e62a0639335493cbe9dbe5a57f61caa107e0f34656d8d00f420f1c97085bde1ea3c11a1338855794b7aa2e6c1b1992df0cc1931cf3ea0cf9f6fb206ee50c3fbaf18d525bd4cac752a91a8772488b2741b75783c52694c427a81c8a2387084fb63880a6d92ec216761a218ee08b44b18bbb8626072335318390cbf05c0ab04c99324fe4a6fa1837ce93567b2a585c90cf8b3b633bf0c60ecc3aa29980ac35c6d73a3cf947d582895c90e70b8bb541ef57b3f984ebe994afa09dfa64aa1f528bfe03169276609099850843d5256b96986e41098bf4a5c073527ea93b05037bcd1a878a717bb51163a9dd258ea0ef1aab7ac0793e75c93ca459fd7cb3b53b703a5d2b72e24835b5d7e555a302526d53d0ce09ccfc8471f725a7a3a48e21a58a0a05ad256bd0616a97791bbbe90305a2d66be04088bc168f7ffabbca49dba8831ed9039511eea57ca6f80ecdfd227f544cc3b1b4d092f25fe7e5cd8dc00a1bbc7e4a5250fe8ab1c7efdfb2f9da4059d3d134cc66a33aac439e8397df075a460e21470c882855326d1ec2e410d9566b647bdc7fa6298ac2c4e4855bc51c607c2e9f3b14db03c78bf5e4b8880c8507fa6b687e396b9f045c1e588ed33673299d63d461d7155d23ea5d656caca5536060bcba2ce17e5c48eeaf9d64d0ff0816939e847b0eb80530bdcab07539eea96f6effcd5f310aedefe35f3da0388f568ea06c1a5848313de16f1ca6fdf7fd7fd5719a6057e37b8dbdb0297d528f788757d9561f14700fbd3be823cf74f6e1ff37ed9a9fa856c4b27dbd682fce0782b5fd59c4f87c7174fc62332d7a2b38b51217fe0ef11ff8a0dbb2b008d024cae1e4def0d681ac9a2f17d8da6ad4dcb20477fa083ed3318da5b96b323ecde844a35953b3b400070d1ba7efafb543e076e9c135c93e691c84b152998974d187989303522b8bfe3f95b9703847078abebc608b3f40a63fa19653c7324633b6fc68d2e6d056f3807a67d768841880c10a453d7d7aef16200b20a0f776a6a926a08f89aa36e79186e7c09533c76757cb4dcc5ef7ce5e9fd224d28473a41d9a2b4c78aa170c97aebdb7de9d974c273becca3774543ccd448859250957bf287b0f7adac5b0359895c47f93438a3cc9db38483497b60a7dd3d2a6508e17093b7819c30ccfdb622630b881541ad962aa2d9e43ae2d75226f2c3e5d8adc5b4826a00b58994e2794f6b2202d323d02e99d49a9e1b7241572a6416c883a1e3975006e5268d61a42553d12e632a8d19789f667899fbec93e415b5cd40728fd52489eaaa4e003f69cb7f1ae7db5933dbb7734ce87b7d48fb63feee2ee57b8793255aa4ca25c9e3c37f1435d3c88deb8ba1888c125c5bd77959e99b656a3fcf887e8fa8b7160287403365ba3eed268cb32a4fcace4dd3b0f0984dabe3ff7f1208bc5d33997d56d6946b9f8e113641acc30f1b42a779079f909ff4bf088197adfcc85d13e104ed850550db541cdb1e84234b0af09c8c1e61e695c0461a123d67de87bacf3dd55ed313a22274e52d56c6604493f48f8ec269f7fea255b9a64ad075d97dd53413d15ca1a65df6cd56179cb7e445e73c896b2d52c28b3d0dc99b47ed98b5c310e75da82f0f77cca25fb1f4d72057ade37f18b706cd0cc9c451c485bb115c5722214d3b575a2042e159539efefeff093bb1028df440181cf64a99cfa63fbb0370d810f4c47fb878ed0b7d18437b2fd9ea74c7dea79dfae0b5774d2277830f24c021525d7c792c18b28c201b17ae955ba2165e2534230bbff18ab6c5390f0dc83b6e589ed7da63f14f938a909821c3eaa34a2cdd35ceda3b97bd1c2bcca571f69f23d16246f99b872da4e187f3698e6ca0af9d620e3cce1d04da2515945c6611fb169a8560522282cd825becd1e602133385f732edc0ac78cdceacd9c19a9f32f683eb00bdd8829a59c039e27cc9d870ae49f7823f9b635d480d66fb042eb58c40b2c6fc0ce53fc126ee693972d7d9680b05c647eea1efe606ae2921345f908fc179bba9906200e2c8910f79ba530690250261808c51a3eb5ea53d69963def26884cc547b50c6622795547edf09f51660d7ce1b2c6ed3bf79d9ef02745fbf0dbcc4159912eedb596368c3f21a7e67677ff4cb15c04021eb027e619feb298d6de2dde69f0a4e1bdbe823a1ceb6ff21e3254956739b0c7f730e0d970dd73f56fca9392b588bf7d9558d6e2f3fae813e8cc607251c893b92bd1f6943d966894cbcbb6e4151893166fa746972062c50276d04eb9204c50b51bd147f056015347a613f8d62febb75aa67585c25457a4ff46453f2600c17253dfba305c4082ccb1334335bb2ad0cbcc8215e1b014f51e81cb31107947c8f5dc8cc8c101004bd348d4fde2fba1c4486bd43e6632c3f89ba436c73d23c0da5c53059d8b8e3422637c7bf92bf83b45c0ecf1e3814073298370a0de756360fa7209fffe777869dde74c198bf05e8cc57400c0254345ce86e1a8cee6e686641cb3cb54fd0e505d8685c31ddff682f60921d41a7ae506bee01e464c95ad74130749b620dcf41a43e276a2173045747fef73887948d9e9fdd1f8600570b4e20e860cdf1d2f04fd373fc0747e0d301ec93f4e0a5698a35be441f1bccbf77d6adbc533c8755c62190ae913ce8c10e7c55eec08c8abd88c897f3caad13afab9f4fda5605dff237bec8da07b9f35a137b435102618ccddcf7e0cee4be6805dc5f39869573c70be254d56e005b94ad56aa760cd6287d6d4e327b01f04e5b88ecc7e0d4829b85bdbc7bd0e0b2d4b1c014579215f852478c1716c68212782e928da2be6b21b25df331d9da58876451d004fba29d2be9ae1334c0e379853da9588fa3d73fe7933f103497d8fb7bde0a2df1eb18435c9824f257fca6945f402a53013060251d85ab4e48813050a25a68279609072dafd531302f4ce8f78f3458462c119fa09602321fe9accbff14ee8c49c60344d8e40269e9bfa6f8d58081581254f8d82d7a5eee7629be89bf7de51b41e58c15d28888a1842bd31336ed51d4c1fc3cccc58adb3d08c52a5370d46c6a5f35372f8dd67d7117da9817fc655ae1f4a646f2cca389258dee59040cb1647aeb6f5630b5fddb885ab00a017dbe0920298f624b97e60f76e12238c2b12d314977b8a69bb0f93b59ccce5919a17537c818dc1e03f750ad21469b10c386ad261542645e495c27a9ea0f3ae99b67e7e07c2f70c788f6ee4e550f08022922e26cd193d9f57c4ee0874aa8b2044002f76edbcf3992d43d07c3a88170a76dcdc03af42f27c50faaa0ce6b0c170a9d0fbcad10987948838222c85f2c93015003dddff65590565acde89bf8a96dfb3ed318a569a927ae32ac65083531684552f9c275d1c3d44a943b8004980b027d7fdf4ab84adbb0370db4e9dad0a5e926dbdbaa67b4a320758029f6d8b16b2c77e26f3a20fff597ee235d8cca6d70f9dd03f5f84877a798aaa6d1620a54180dc32dc764d482d7a76ad2e33c278fa5b96d4c1af4f3833b0f93916f66c8fd248571e0fd48f37ba9cb1d0d9126773fd843a9b745d55e055ab07a4c92ec01ffb28a70ef71aa6bf83ac7c71bff53f5fb285a064ef8e60587e8d962859cc7817ec6c9649854ee49c2ef351b769f4a7cda6b1afa44c45e0818f9a9019ba370b37e16749061e587c0e78ab414b174e80cd9421f13105f1c4dd69a385ad1e2de8493a9efae20807865b5e30d3f71c37d081dec840f80eaf19f87fa2c2aea514882d20ecf0c527c62625677843ac07cd68bb3e3b70c20ec945524238b52299783342837118023ebe3667d18645337a98ae55ab6843cb231e8881c4cc9ddfaf81c1da2652f6d10b8d29020ef9f7e9e9ce87336f122450215a3e467e953161d80ac51defb40bc0e204a76a030a64866da1cc49b4cc265ada35cd12f216a6a92941cf30e470f091d0edacb7d2000ac9e049050f747cd6a577e156ae5b1f3e22f46f33fc576ac8d42e12e786d27958d33a6e2ec0b98a74e8292febc746f2bce553cce5ce02b0522e213ce63a61ce630ed80668f085228cee0e8decf1bc86d1f34fff484d4311c1a145ce3df4777eb4b853c48fd54f8ce33b115549642da7d038dc2e4e58a6a8da99dedb07768c04046bb1c72c5bd36fd273172bd6562870be5c1965d6ca209b04da3210c7354074b3aa69c9184b3f6694c0d880d36e731f178fd9de50075b082ccbcd77f0644219b59e7fbaf0b2d3dad57857074234717e3167ce0f6851d9b2dcf8ee7d5015b998ba88fa9ecdbd19e9a710e036d388da9243adf33655111d4b0968447b4abd2d259c940066610c2eed2829d82dcc34f5e153ed1ae79362b01d6e0de04d954c93d6c3305eb8e817e0556233c8a728fae5cc6d40603d4b0fab27a255209a6e6165a90756b8151a8873e226216f7806b6729db2c9126589fe27b402a6f6ef87d603afd53b2f2684967870552e3e0ae824a13e5d0e117fa40ef91962b61e2ebecee6ccd651a2beff7051e1e495c9d03c4fe595445cf06debaf69a5d3cd478e74efb20e0a1cc52345901ee9e5cba61b970e471173b9a94c996bd0fbf0f36c7b0897dcd110336f1a5c634457a9beb3e0d68f90dd242be022ccefcab6bdb417818282be095991095570fb8cf0f9e91b946ee9f4fda61e7f0af0eeaaa5726b841c1c5fc7a13dd106de896545dc175f392dd6530b9260988d7fbb07b3771889f78e98d991d1ce1d3d10a2499240b9bd8e85e8a47b158c3ad8683897072e7dba63289d143496d60d62c7266c7f3cd4371fed176e6a5ecb2f58ef195a40f070fbbeb3ad1793f82bedf3975facf4c6444db4d6683e5061b6a28c4833de2d97fb0e5af762e9e2d04148c5684cb435178cf04441ec51da5f7d5d64b4f9c774d57fd03ac91fab2e4d15bd3325b204682028e12dfba8475624e7b3f9e3b1a6b4a784bce5c89b5f0719d97db77baa335baf3731d417a7dd9478035c9601aea004013f951ad82999d1516d052c12ac7b60794b7fba89f8672bfef6ba01bb255e272678218c88b3167e2eb15764aad1125efadea785b41061429b1112b744d31fd02549ad046795568f8e21c5795a7634b50fd5b861d4bd5e23c1112582e187c1852e027e4523f2975e2985357bbfc237230ade5f9f7cc248ed14e43c10947182a1ff29933896a48aca69ac2febd06ced7d8dc27a810e005647f409e625f9e0161fbbd965e36b4599ff335a4a9ad561db879de2f035cc0ad2751145e8322ce365041ef9e98bb00910568a68c6510b45618463acf45db6c6bfaaa2f0882f688de1051df081ee45cc9afd6cca8de73b4b087f270477a4090d2395d290c2ed7c01dc72c4d8330367a862aaf1de4f746590e1c71147ef037c54581b6ee3934b959c7c95f4fb2db75daf6878dac4195bf3b8edb704fc0072513b054406da04c1a8f1596043648eeaa25af3a4ab811df28addf909735887f2e0d3f8d8598fec9813564320e9572ba2e136845caab599af35f6416232d7f33150faf20c6aa918e41c236030bda85c461527846ab7027d4581b0f1b64f50242ac1fa1b29fe69184b50c6a4ff4f35de0b70aba9c775056008aa5dab3ae1a9f0ef5db34052a94cdd67230929c208de33eacdb1b3c14ecbdd150bbb3fb820ff03e8266a70dc1a8c28b27b6b28842a2be7d7efe49bc074dcff43517860cb835cd1766eb22045c2dea371c3962b4f7802403189ac5f94bc03f9b2151a08cf83949cf240b3f6a3d3c0119f385c093bf870a341ec389cdd2ff6fefb27db3533e268e4c20695189b170c5ee51febafcadfdb3f35ee8de292075f2b16096715d225a3f9683fb33be21a33182cd1f3ef254d9e7f05f95d970ceedf6b3a98d1ea96134f7850600759ff009ba3ab507803319d83509ca21befa1c9030db06d26e858fecda74ef93f2306a15733c0430738c2f0ba104f86a6bd9fb50f69955ffb4b461b42a688b95ebd532d30e57483ffa3051bf946643e95935d1ed478ac5b771cb4c4edafeae47f851f6e78eb1c7223c98ddd8f8fab2341c2ec888001e3cdc7dd989e8c477c838f23e6eb6df3176f471c1292a8741ab443b0ca29df43ef218ddaddd1f4bce92d1b5c585ce1b2016eae656df13b95dbf88e32e24588c3d50330ee86c23d030fa49c1dccda29930e8fd05c1f94c13f375ce3b2019254611cd6fbab5317f2bed7cf456ba2e1a1db6c1813d9529349cd708b983a420a47d88476d8f250ad126c83e9886c6ce7f18c056687ac55a442485521f202c2b108df95a46b8e5d217d845c349c030bd4c812bba2e21acea10124e14a23947fc0862f5efb36ff0453df8cd96547d7171f966094b1bd8d4864a3ceae8f57493eeb9045397b7a9479ac175b5691e116fec9bdd1b4ff4f694a1e5dffb05ccb8dc9dd9fc3101947945e529fe7e13960e660a65c2595ca17c28a3a956a54ade6cd1715871fd18ba34644b3edb8590c4dc6748c531afbe9cf1c616564e78ef9fef755cb741a100830a53fde75bc14d9d70e7021fa2bc8af44aabf3f9d54cc96dc07dc98bc6c09a918b0a875d898f16c2b42a571f77f82dde50c138268054a6b2c0b0fc5bb60f2a3ec808d463111fdb3a708c3c62716566836260dc255a5b7a77512f682a1ea71e36f6d315921b1358a1de13b1164830292f2b1494d6cef068791337d6ad4dcebd6aaa34f69e62afeff6a4334aa11a2800a7e321f7e689be14dec6afd052dd8603d95552df4f87cd9a2aa7df7b192db4e502e459ffcda6185f73e66e8f4e5986840d29c70aeab81ad3a3c8a5acb8c306e761e1f5eb5a335303cc8a6725d57b2f68cd71c7629831686c5771eabd2900bc03b9ce54880fae54f115862facde705747f1abddbcf78e86f956d87b645367c5dfd4bcfe58d328da02bc010e6ab107120b6ca02575bdcacd3f6b887a4c12cc2910a1a00faee041b46f72e608be2c83ea26f5589715dce4cd1926244a6ead9c5134ffed2e293267001c94f3cecf44c5968f01b4ea0d2658742b2973a2db013e2bb79ac45ad19eb9b439460fc09f8a0774ae85f78d83ca991a7a41180f2320c61baf08445d141637df63a8dbe63a21e6ee07dd1f770429167705356f17f20613acb66350efe0cfeebbcd51232b387f34716cd92177a9920fbc94d5f7787e46a620cca21784971253b60edd7faf54b4899a6cd44300f451be6b9d87ff65d8bb2c3ed4bd935d3e0d35330d950423c228297ed82316a0a1c7b269e3dc1364724393b9e092201e55f2db7beadd356a9c439e099c6586a70fa6d48cdeffc8007b523ffcd4e96e0bd4e83c7e4d7a31344d3131dfad1b57a0da060d52d995eb203ca946906d609f0080f84d3a54da470b41ded4f2e6ff1c66e78d8e735d39a94744f4e2542aa50a9f73f6e1f4db5d810b9f218fe8b33b34d300b81658df46c27077c9fcde22546269e6c13fadaa59f60ca8bad76877a4e941776d6a3339d0953587aa7018f63acad8f7d18dd860d2ff71327eafb6af97ff7faed31478949fb484b6bcf57d077fb39499c340e66526113d36492672344bc2aa2413b747509870b00b7d667ea4effd3d1e47f41db8d59fe1d69e80aaa31740e8386bc5831591c391a1f15e623de2eaeda8a4b7bbb340c541d24c9435142c43921a73c3d2002d27294deb0309c1be02823f7bf82f9e7e703ca94779a317caaad04bb8b696c929595642808e5f29a2e0ef4329e1a20601e23f050e15b6053b6a4b3ac6602191b20ab590a6e4e5fb8fbe162d98607bf13649eda1be1c851ea1714574c42f3770cb9e3f29b59182fc32ddfbeb3d3b352c3e3729a09471d21bc352c333049c297a14f98256ef62d91f923919264c63fdfc334e54a3e184316c9a07da444f9936f83ee45de70c0b05b3dfa9e78080a0cc6f2946391c66160813ecff751c8911ccf9476d7f28d587af6ccf2535902eca528625f91a8e065a8d0ceda47f271e54f89352883f7115043fd3a2e087d4b766082afbeca013d05c099e0ceebf27aa16e189a26df57ba176b5cb097cac3d4ce0de2fb42e4b5a4a8e5bfa7321af88f1d860099774add79ba60a981725fa3ec217130ee34c274f6fdf4666f8fd7e392c048a206bd4142ded1ba9362556fdf054f6341cfefb0527497f57015e04789af480edf1463077f8430682a56c5599130b300f11a31d6c56a1ef798f6a02661fa976f03c672efd6624e2cc1e1ccbcc5e126167ab31029258385396c05e01697249023f6c23fefa554bfa9a9ca97daadd26ea8deb13702a9ff7bfedf8053f3086b26084875c000dc6aca7783c5861da536eecb1547e0e5a1663e6fd68ecae37d8b6ee88eeefb028c9c2e5fc1c659d75a2e3e8482481007cf51f111b03a2dcf78cd3865dbd210c4b523a9ae2c5a681234a5233239e48c8b164631b0c0623127b362039e3384748d7c3f494bcb5e70b45e8a2bb1f21a7b71e4230d2758ba2e2a36ca93d1a6abe4c2b8e9ef15a663695c73caf23b51c3a936b85218b07049f17394efd8a05692a5004f2b777ddae516c00707df17e7fef2fb4215f493b689c0e4ea091d482075b28b047a7173b4c6914da734e9adb2e6746bd8fa5e5de17a7a133c9ee9b523a8553c0e5e2afeb2ea63878c73d2ba13182ba582a5fc5cc05088f3e52e59d805e08ea96e2353f418f34ade858733134854fc31028e6c977dc23989d928ee66977fa4a6161e3331bacb178200498934c94a61b64b47b10df3293cae56d7c3883d3396782b010a53984d3c254c61fac2d258d92c155704fffbafcc26c51f1161a4ea30c34db98d3ecd3d63fd27783a4585ebdf28d7d886bfe36cf2accd7a5ed8b52fbae908a55b80ac1523ce5129abb3be82c17f92b735174a2f65c007923af26d1373d58aacac65b93ecae07f746c533e6bad4972a14ff4c9ed8c3479c80eb4ff1638979b1edbe385149f32637058f9aea8433ff3a2f2a843eb205b685ff6525cb0af024165799cd00ea10c903d8f08cf6c1d39a67428974b29eab8ebc0943a3816f45d2bc486f4a0b32c6718a55f4ab43549f735484bc9aee21432c4d8a2f1355264058556e3c36c3245f355da86275f6450499964ad8c23da35d39f28d3efade9fdb25bf9990c176b58504c44233eca670a4c0708e7469d5553ef05857874e9891bff066a29bff4f5683736e1861437286605548e912c7da3d1d6fd17cd88b8ea480300eb08e8a426d5d8eb79e3a2db8cf8e0ceb9e607f6041d6b857143654527a70a77efda9aad3dc39759e73926a29a466f614ee74fd9c7107e73d763118f08b18c93559ebc2966fd2596d18fa43e9fe67bcada5259def3c0971592d6e85f2cce3218cb1382e22befcd2fbf3668400c06fa58298dc8df41e9cbd6cebe59a3de862ca6f0ec54b673e9eb08ebbab1be9c80415c86dd44e56ce6ec4214a7b229bf5dba88b5bcf029a8c1310759d87a78e299f250c7823a232281484fdaf5cda2aee51028a0d5a93206e4c716baca406cdc738f0fbd125cdb65a85cc75b4a90c2bf3d14da7db537db55d5c6f28400c45c11067fb3ea1f8d366f11f8966b6fafff1a5c453448dc0dc328bae7d0b5fdac52b3fc06f76ac5604dc0300f8bc27156a242dca117be88ac407f418f2a58efba6ca0fc2e61f54b5cdee8071fcbc91c96390f661b109c9e1db7ab5ac8b29c89044cce28350e29f4e69e94ac273082b78f48548bc0f46ddb453cd05bd9da9fa450ddf6fea93b5dd77625ec5d07443cdd42a32dd173211a660ac62d481dccfd86e2e6361cd0bc5f713a085f2e9fc8def415d8f48ea2a9c1dbcb612e1ab630d1cd4c43164bd1f61112728c18c6aceeb2aef4f392dca9a7ea4de27e874c1c27f91a1b6f67ab917d87910b50fe8fa9b5b8553d320a5241381a6ed2194e881ea68ac56e5b05d085b09a250eaf177043dee424c6adefd971ac40f3319c1e82c545407b5b0abcdc2ef790b75b1d38f88725333356e7bb7add663b30af32f7a9561326bd579c4f496771e00a595d5262439afb63b56bd3ca4c55296d87f305879db137b01aedec11323cda28d96ddb77ae6641281c503e852f9b99fb3503e8d1a8b490da14f8c50ce17dc367352839c1cd25601bd043ac82463596bf1d845bcf899192a7937611c2718d85e4361270b54bfcac5cae52aa58c8c6ab916a55c85601026e13b81df196b77a03de33cc36b04aa7b68c3ccd2611987380e6a6ff67eeb41d126cd2d370bac602caf9a5444fad72e71d8709173697e20397b72c7a883e9a1ee7e3a5983f5a03610f79bf5d3cdbff6f90bbd39405ed369a3442ad69bc56185677ab3f36e7cf53564fab2b32fa7001adabc257deb126400ade58dcd5e568b3ee335157284ab2a6fb556f03f6ef1d63371f92febec21514c9c27c10ddd339f8f2beb8f0fc7318123f0d1cd1c6ea15f3bac9b36ea98869bad3e48ab90f2cbd5e0373f83502b651ea2fdcd879c30e83906b141b7628b6742f5f638d223cccaaa76b8e4c47ee1bf0e2d724a878ee25477f4efdf8296ca6da1401d3122b9b639ef30d9a0fb23292b25f1b119ed1b6fb085d1937750827317d47aceac1c8fd8fe0cd0513bbf233a8e72f2dd1f57c2e97cbf74d014a656aa87f34b5bb31a8a6146146ffb38ebed4b31f85788140ef4851431db02444a79442c829634e4c074c92549d5b8302aa0539084f86694ec3226f8810194b4833d3757d3ef6525ef7908ebc6d06d7864b1125536176e26f027570799c8b393edc50a562d4261d40a6b2f98ec8086a6ea5a646f900f284b0e0f37bd419c9169bd7988a72c9e56cc3b40e8da3e982088738e16ba0ecff0af0e6c1e1fd4fba5c63a075351fed4fd46dd004ef3050707a25723a71a157c500174fea60538a6e39fb07ceaf82a9bf9e4489766d97b3894a33f8817a73524500afa698bf30f46098d3248d3bca23282e1e717ea37103af75bc36c12f53d3bb099fd02acc01c4ff1b197a7a499e519eb8774503ca721330092d0605e4e65cd089f179771f8227c6a1d4063dce45496db709b6faa99a6790720c76c3184b25aa66538804b546a2d7e0968b51a1a6a7dc7f9d9a9a3fae958b65e7d67220c562cd2a0a60243ce070b009b01bde0ea85288e4ac9f9e884195719535af97de98b8fbaeae1a1986ec43cef3ac6c9b10e3818e478514a30fb3fb9fbbb3296edb34088e090b2123173c78aba8e086160340f4fe604c28beb6dac3792e27b7e6679ff32a4dce656fc6261c4456d8ad6de571371b5a162401052a56cae4612d1e972a6e9dbc2b730bb2d56f1e1d98ef108213e5a85ce5feba1efacf7e1a0b168b419da0935bcd3a3bec9db79684f63d7e5e91c273893c0360e4ce1dc0e82c27d25d26f7760a8526dc60b457d158a08956e136a79bdcce576905d46276be66f20541be42e86600c0048ba636c9f80caee3d21e409391047fb23f50ef81c247f7ec470fbd5afefd699996cc94c31e435fbe2b256efa87f27f61cd063c39517e24000d06316db1d1004c290a56feeefede8299c971ba9e3f5fd6ebe4951ca49a1027c3c00495c40cb8ca74d4f2bfe913f4b7d633fe46c1ddf463c0576a68854906c69e7cd04ada296587726af161dfdd959f8be62d890e8fc27c301700caf678b54d6db0574dbfe1311e4295ff0160dad2a2bf1c7715e9c665ff884ee283323f636a8106610faabb2fbaad2cbe31c5b290b2746fa18f8d4087e3e04949a00f5bd6b0b688f480eacea0be174de81a3b9aaa6d2923ef348104187c04cd4819d25d0b74ec1c257f6d914012d77ce71a1562a21d55a474614911cb71448d9a16a0aac73db19d7846d9023ae90d454bf87d8a3f4c53c94230f1cb53ae6d1b76913d333095da5a00c62c3f8f38f8bc07dd44ad29d9c508e90d829e8683e6bc55feec91c35c205be1d59e93c70abccbd4310a5d386037d20b3961a7f3f861fd56902d88cd37bd4f623e642eab5e4a07ad920b1c045f4009c01f239a08b2b627bb2a1cb545519fcb517dc4b7212ef6544f9b20bc7e3db56f9bc9027b43209d6d228771ad2119e00f3a9b050bbeb6057f77ea3ac0e544e9782966f0993f8abdbaf372d1d2db216f62b9cc2600ca176a42f8090206533458593bf4185a26974a266ad092221f12a4874a5ab8e5c28c2e3beec4c459432d64e489177721bf1feeec91a90764829812b557135d53e9560a6ffe1ceae91425ee7c3ed667d197a677bb2fa2b822b409c5c5833c2f67127b0ffd0036da65ae149ae780f30f16087ff8eaa46782b2f02c485226ee99f3dc6c0d6a832b46ba59379c68ae4fa4e84601a6f8893cb7b2aa4f0f3cba43f7f1fd18a6c20197f57dcd1b414c40d62f70c2c80d898128d9624af9b3c5a7cd961bb8bb1efba51cf436d06896dca3deb56da964480eebb604634d5a6cc6dced8243f345e8d3cda1c6b91fa2f76e5454005568bfd085338a2385673d452cfdd0f2e4faa1d050250db9ef4bb31ed3a4fb11665d6b61810e7c87231302713c9d6da1f70db266143dbba93d9cfb9c127f4fca0a457b5c3a2b0e7730c36002514a2d88fb14f5d01f4db0675d8bb1cde6b8b420c086ebb477d2045b3e93a7e9b7652e3e6d57bbe24dd84839baaf006b5791d74bff2831014aeb923c049790187aaeb8beeaa0bc5c5bbfd15a3e9e29519ae6d797da337032eca9697d99d13bed08f02e2e96624eac57537a11212e899d71874fce157637d4fbfde62156b14a443a72fc1c53323aad9e8b70e7f103d60107850422d3c4c6009dcc8f6e2d9efce793c8e27c9844e550f9a453e34fa0180602aa1c57d18f249beaa28a5c592c387a9e489df1c6915c9c9555b8ee0a020124cd67350e327b4771ec904c100ad2c7cf91ed085444e4c1ed522ad02c62835d602c93dd53e7a7b54529151ba3f8f87d5fb5ef6509adc25939ab360675a5413166ecfccf829b1669226796bea12926a289225afa8ccc8789d734e1fd9b8f93ff0f2d207378dcd52dc4fa7903c16832773cb599014b117dea7add68751a0fb63495f5888822e836078fab3f8de05876412f99afa731bd3c8b48b1a6ba8586d91836a458d07862fcbed144423b78e564da6f39a2fa2e17415b4dfd5c35fd8068854346d968bee7b77450dcbf0a115e7a3f9a42585be8308ae9193a56687e3637f96ce99ae035bd1df09d8cb808e06eaafb58618b3cd6f8fbdd985719b63bd2aadc951778d24de93b96d80ca74e53fc9325ab2238f5f1463a192c104c9e57419f0eae2e3090427472ebb19036c75c9309c029eb058bf1381f3ce501e5e19d66cce1d8e4a0e3695f77f488114a8dd2b26aff2e146e30bc063cc464684001a23d4b9bdcc96199fdbd5d3ac574a8bbee213ac1fe94646a20fe289eda7783b6bb8f9c292d7d518d5d78d5355bac54f7a10463ffa429e58cd2c68dc7ba0bc706f05139ecffffc599b71a562cd3539e12e62571b01d36a014197a215b3d3d8f1aec0695dc25b85f9494be0ed4863501ef8729be34ff0b4c78fa4623c8e7af2e57dbba4e4664c2fd67388517e011398d5526d2fee90180aa7156431e92732100c54683c7acf7d083910315290d26f870a925ce3a2a839243e4161c4e60ec9c2409aca8ded2e15c46896f59c730ad0a37be67d2edc44edab204810b5a42a60dcf1e378e92974f13010df662ba2301b18d503462f794ed547ecebb407674bbb56ea175fee4bf3cd18bfbdf96008f35713b983af88ba3329c2322199e0692cabe37989cc508be8a7b0ae62c97a90bec1760d7c52b4e72d0f2bbc24ac44498f2a5f813d974589b620ea807574aa7e4e0efb6e9de7abc7db2405c476fda68f81f9e9563be1b5f562eb168adbbdab134fa01c00581b2748ac19b2433bbea1224c183e5077a0c3959b7a9b0d6d896a59ad437bf1111bf2855d55f5066d78903902252347678653485358626e8e4f427ee282663ecafc9923b0db67f755f5fd9d447499e074349217d915462cdb6399e6695b056ca2c9f89db48ab2bc51667daca3e7c5df5da58d2d3fcdab7d697c4836b6a4c132867fc7f4b65229bf52115bcc8a918051dfebc78dbfa7032cde2bcdf4e8f11db574391be2f702096cebea079fd408e45833c60b0b4223ba8cabf5dbbc0fbfb946297455a8d5190340b1a0859844e235d8fa3ba2d4997083b7e8decbd4782495d397516b0bc66080549cbdd87124b07b75073989eb7eee658d1f0730301078c56caaab5033f1236695fc1c4012f806dc329558776f71fb0c22c840a1af478b88b1146f8e959f7d85dffb1501747c3762322758bf0f3dad13d9563565ae40707c644dd2cf67793ea0158cfb9236280405224427d7e747bde957e391f3051c2a449907304a9eb96f678c221202fa4929d7a1450b164fe0833f5cdcded773d568b8280d577f054ee1cdd685cd859538a8f018daaae299707a8414df96b60dbd269c3eaba614259fb91cf8634edef83b188477291c2bc20f24b13bfcf5d2f932eba7c4c69560da825b3b6ed8636dd4df8e9827bc0fefea269c2bd850353fc6bc3659ffe0d0264c88a7882a80dda1e613bc924b8837902478bf6cc2d3e384544a4ba7e6087ec7bae622be3c8fb653affbb13f6d029c5c1784b59e97782258192e9c972248e362fad1af55c6efe2dfbc6b422bc90608a339bc27eab51a0be38707ba96ef29ab966d421c318dfe1ffd6948162ee76aa3d6b78d7c972eee9c2636283310bfdb451a790a1a2028bd3db26ebbe29a5ea0318b72378c324e334d495008ebd87da4e9d7b9d4ecd88c564d747c8d287d6b1909ab68d2f961da1f599b524b8d095adb10197298a8859bef56882083d2702dfc59fd7ccd6ca68bc230ddb5c0e26e8410abd15e18f4b431bb91f91917253213369302029d6980361777785642d863b7579ffec940b542e956684f2d2afed4f86db129508e4298de462dbe19856c02b136fb94bdcd85c093e03766a641fafebae101dc748fcf54ca263fe9e089e5f654300f64598cdedc8c0781a6097c83f23810e8f5b6928c4d025b08370526629740051e7f890f712963aa3a84ac957f4c269757b9443409e47378f24857d148e561a9a22e89af0eac08fb151ccc3c63c715ad930b326d2c7e7534a07afae45fe1de2b8ffbc58cd5c970d05532b08740d9e21d21999a190e053b7ec339a9d09731b8b40c20b025706957f5e54c7422a39116bb79bbe4fef10310fc1041804a8d95d9f406e41823b7506f15449d24cdadd7316652f6e505343003a0e9aecb40c8be90135766e17d172545b7ead691e761a7d0eb387d811c1b90ea2d6014782cf762ebca61a6c13a7f710667a16e32010c8b24d6b6df7fec93d53e9bc13e6449b3102769087ceee3bb40a85985958d09cc814510eda55d77e7826ea6f800af4bb55a6fa9c1bd7adf3863fe3f2672dc5512f9a46a749dc062166efed119e53c971a232093f5ee8a06e45c69d1e174423430bdffbce28e68c10310fe57226ef02a4248345e5a41fe2959db2572aa0a00036fa8f41ba2d7da22a9f6b325c6400992b41d131c0fc8d63d7bc26f519a1bc4a4ee0a1b09d09b403c5b7ac8f59030d07c09426c9b7a18f703d1d95ca39d1de05556eed0e10bac5ad3ba7096e40c0c614d76841b372f9eff370f2020150f05907fcc5dfd4f4fa0a7311b513fe8ebe52a575d156100995297dd4b7582eda4787eb8dc4fa7b7953d589da254f754e300f7910e4fbc6555575ab8cec661f4dfd636f46477b1d08973535902026392ce94d0f3b404aec9d507f78ab8eafa66c84ddce0697d6db7b7dfe9a4781efbc74157727ecc267faf4be7b63c0417ea0cf0a7f146610720b5d15534f3aa98f20f3d20d227209c3ee00b027faf0c81aa05cc8585c5ca37761571e6e5be2e50495762e2a512d8cd7ad04d8944a6380c63ebb80c19194819639b2ea9cebbc983eb3586836253a6509e98dd50a24a366061ee05c0a3f0c8b4c2ea45625a1d91800babe43b75c20a0321322bb9948455e9b7308d302e5d8f23ab2dd9830219ad52755695bbf246fc6a3ae645883166dda811adb47844a9ddd67aa5631ef70ee9b3a140aa9bf4168a3c3bb7fee027193b3f883ee0b1ba20d75f5cb6fcb97a397e80a253acced86e482dc8d2edce585a9e8fe6a01c389d55e346f07dfa5853df781c246609c8b9e3a3b5a2aa1e954a61fafc56ce99d36b9ade2022a42c4b9cb9e6c988112f913394e2402448fc011455777ff382135e3571b93da6f792f69b6ea4536413cc9000860ce13fb009bf085ddcaa81bba1c4d25dde7cfad95ed32ab28585f7821fd6231d7c643c4e8b668ee6a532a0b6efa9ab53e380f8e12f89fe789b009b55d1127f3b1c053d74f08b09a706557dc51737cf0b35f67d3a49c08dcda05be712cd2ead6592892e7d498128cdbd7c1d289600473a0abdf85d8a95c3cc9be93e5501589a0dbbb87afff7b5ee8124dcc18e20b097a5ab9b26422ded1e50469d665120cfe86ea6346196ea0c3b73e6a0a3a52bd78e1cdf0de9fc61f68e2d8f43cef3a42fa9a5534510fd4137946d0c0d5c180f3ab7c0edb949974e2193c6ade23fe6155aebd8fb760c981aa06838b46a6b4df1396cf7539517e270ce82bfb88fb6304110beb31b73658d7a05f8d38a11de6359101fbd238dd4af50f6798286670ac166b53a21ce9d04881bc66727d26662a33f73122beaf15851970eeaad6a080b539ff4036982028fc707a3ea1fd15436153e112a48e05d4f392e42ca1838e813a9ab23434c9d676460f87aab5a465cd1210d55c97e1682889a61236fe03a14ce5663df14fea6a9f1fe9936660c90d8a8ccd2bf3200f29fa74ed3699f8a717c8014fcc912af238aa45bf2e141afee33f996a64be049efe6bd700f3cf311d41dde3e5eceb4ed56a4e57b66ee3ca8075996948304608624eed5f4f1460ccdc7b8505411735dca5f8ec4e2a7ba3052765bcc8d944920945610f82e3316f146b8eba6b4d5016e3f4757c2a032191d4cf08e8355b7c20b5c312012265b25f39d96d2b33d3c47895b4739933f758d7a92a16cb25f757053f0f96cad88bee2ac5d053d41b9709dc5b84dfb8d00f3ab6f948a5d74c545d1e613dae217e7fac8f11fcc59813b56380c380c0e4dc0a33ef19b2fafbf4287625b438fdf61237cc53a4ffd8306f682acf7e682697d2c6049a42a12607b201d9e1994c78e7f4954648284528d2659645a17678920790b5c805d72aceffc001aae7e04bb709c54a1d41c4936f9adec863e90ecc3192286fecd2455e7bc5a1e91e7d30d40208c91af2fa7a3c64ba34ee56e02e6f1b755636bd5334c68f569233f812387d8fd6b910a53021701077d5e5526dded6092e7f37126220e80fabf1b26a08f6374f3c279c4291214de2b023dd36372a3c11b0e9f663894cf86345d8a081bf3c222ab323cea349f26cc000f109a5334da7c35082b5e30e9faa16819093d09b2ee5009b3a746a5c87304ac22c2734c871ffcb9ab2a84208f8fccee5a36a24184109ed95824bdf9b3991551d5f3c56086cf89d0c50bdaa128fceb6fe586bb95cea633e9340697cb4c62059220b826af757c9caba0bd17c0b00425d31f50b0ec6b89436fd6b09920236c42ae897c383b02f51e922397aae4bd9b3e796c3abc050b2d5dde4c36d6629d8d3034da55ed60d63b1096e60a41f604e64cdb31bf6d7b9452d7fa22e319b3411e3cac08ee5e647fe2cb259c8229a2e14034cc33b69c1cea62c8647ffaaca689b317e37d27a53a3eb4e086463af67c74be29d60f43e4e7c26fdca4ba4d0ba3442db1bc86c9aea7251be20f042884e12172d5c6d6edcddfafaba83f6fc5662fc02f64fb6c9dba0c80dbfbb517c9547baa24816952cf270f52a72b7c300e9ff606298f30ca744abbdd95ef17bde87f41cb40b614cc9c50271b45cf3eb4b651aaf455870acc09a51a9ce627f28c2d861fb3cecc97aa76be611890bdee0b88dab7a502c202d86637e2a9eec944ec44c2dda818fc024bf03ef94d563b57791fd56e789db2d1a7fe4d5129085db399e4566ec0e56ec529526771b2f311f930414a5826648270ec355744ffbdb9169ab263761605a073987421b2bbfb332264a120925820a800cfab052b5a373eeead9ec4207395da3261664c41ce0a140cc07029dda9d647cbb63c95e96af77fd90210a1e80567c516403379cf85647cd2511e22ae3f07c6d6abe71a330eaf22464f9807bc9ebfd87c69f2818225e1d7a69896f37751ccb94978429b16564673df6daf0fc56ff519abf3036b658f9488284c94442d7206d89e67baa28787278b1e424e7ba88fbc3aea7966ddea865b29a6d394d62dcbffe4673462938e844826d5f7ff76b1bf0854b9a736415d26643c4862259147039f18a87e3885d887fc10f6b187c60463d2a5b84eb6c52bb16d2b6bb3fc1e15981bfd8a052e27945b7098f1b6cb8cb282fc1918ec7f022c43f2e1961f86a29439150d4796945c8e2c63ea5acf6f3d2df04f8578494aceff96c5620f3383e3daca5697453965af8317c298dea20c8ac13dcec907222d19dbce9c19467ea7faa2470afb9ad07319ee1ce8677546927981708d040b03d78cd5ef4d38ca82e1303cc0fb297ff19a5bfd1b1f850e5418e0af67a8214f4d8ae98a2b2ffb74ea3ff7013cba1c1f1c32e66813ed9f2e546e15dadb0200bfbea25da7a61bf6193c1f69fb556c218ba54cf4d87da706657541f20c9edf6a0013db569edd4cb77740a641e8c468041e437ffb6a11533e69dcb8e43795c84a705283f7a8f2bb716acee2aa02752615b01df8f25c9bb4065721d7da64ad6308e9fe16bcdc7f95bf189c9d80f414db6465932cac6b774cef4139ec1abb8f6326b961de506362cb02e997545fcede8948b58dbe67c3fd7222c7e3303c595d0a0d6c3442ac62a835ae3c30302333214f93ed7ca93ee946db7d544d5ddc9f9fa82147358cf08d382d7b4232891bb752ae7916afd2d6bb14e81d9ee2011ed2863aa5db7aeaa29f37ea2bcf5cae5f01a32b7f64a33b56bb96583604f45f028f07f635bd5af88350cd1873507e6a709f560446bf4daea9a836306f039f174bfc1f0e7919ac1cf8a8d260df1e8440cae08232ce65fd570a52eccd6fbbce4770b555faefecee91db44f6276ffd2b65e766a2e2009a7555d522e9b654a89f064571dc61d48d4ca97f8ae428d2dbb69f484c6754b8ce9e61b3e8f80f38b74d78c5f30753dda3140e82d3eaa72e5d56dc92b3b4594130c6210ed4d98800328cb300b32309f79a39c3269365b2842aa3bb0b1b966507d3feaf3cbb439276ffcfcb3da64c8f68edc3c42c000bed6d80f4b8437d554d82c29dad2af861fbfe0bcb5bb65603347b3385790578736d6621a3df987d2d0a84f1b5d17c544fdc26b2640dbe7e4f371c0a261b0c2ee62ca5fb80ec30b83a36a58a6986eafd08c99b3f24a1500431c59fadba7d2d0ed78751ae3a63b08a15e2f46e5de42341bf4d47325b84fa314306c6384eeee161a0c3ca02525734b206f57d0fa0519c998619acd55c3ac6c916cc2df5beb6ee023be7734cd62ec5beaae376a4033eded65ef96c3e5314299dbfc8e49878711e4b247f63068adc71b3185308d61124c6294d1f7278f3ea660904ccfb32d7f681585f78bb632e21e835d56098ec8af8ba87bec551e9aef84bb6d39b2dd5f6ef6b9d9a479e85e18ed867333ca7fbda2575cd0eb0e4c8a4fa82a0e2240607f2307e9f6e6b224dcd17de1057fdcea3a9e35464595fe1d849614c9c17b053256a52478d3b11dd4f2ed3dd218383598390d5ab8ba440b6d4f411128014eb43d73fe60807a6235a64cd84331add511c3fbe08d7f52b4ab7cb3efd42be86a0faeabb0b91324df6e150440a87c7ad973fa82f75c4f673f4208ca78cbeb75842f209292756f00f453f1bbcd62c717ac352e8d7c0e3b4c5951f7c131cca929a33c7cc2c67998308e2b93a78dc3c3ffa8b31c5cd2d71381842eb6ab6cd07ee097cfd48e94ca40412e0a0c183794a5da4754f7f7dccdf4934da77d86719f4707538ca543a55c314163dd857897f990c62fa3f0b99c20688d53f86c4f910d31a987517b76f48340ebf1419977f55f926bc0a306d8fb969baaac2ff1ea5999345a7674d5018a32b9dd9d7377b7080d583b47c1ebceeec31b4e80c6ecf5d9d91c3b1a3e8ffe22c684e667e8bda58bce3b9fe8f8d6f6694954b31cb181b2f9403c3276e14f4e815d939797e5dcec719c19a37f7addac9eba0b0a4f3c158ad382d02ed944e43173a3d891a5581248bf9f6fd2cd0ea6aa34aded3d3cd06a198249385c8ab999ef6df5083d1fea97295ab77debb989f34fad879fa8490c4fca3cf32e1c4f174ce986a29a5867571a12d747eba677ffb19254a275bcd32a4e4d762178491f19f6754f37172d2e966e2eca42d3b112bf8b760b3022aa0342c356b091e9f79d419006ce8d2a034f4229aeaf5cfd40272eb113fd98d8f2d555e1b4c75fdce461fb115bffa405fb1c9827be7f09b7b23fc5973a1ec22c3a1b06e2a8e9a1c3550b7a2dc22089ce54bc45c615e2814d449f814f1e5494706a36e88ea6fbe249229badafd4d4405e04098fb18a91e0961caa72e18ea2636a6e74c707b272998de97e9763edc78200dc1de34d4a16d9a64be6dca2ba37e1c23c71fb235ecc65e54123731cc0ee0ba953ba44b4dc7a4aef83f3c5d4548e52f50aae03df5942e599fec00307e5a78ac5e09e826a3da9a2c878024ebaad7aaa8105017b08f4980e135fabac7f0be4ed9b019ad82837210e0a4ae191d08ae94a70cfa4ce1068df29cee5f14fbcde85fd695da52ddb0fbfc0b998ead9e0932dce40d3aae5c5213140b0122d84c57016c7f6acbb6f03758b63f0fe26b1f338dbf792289802691c1afe5e083afb9b1c05e173bc42f1281b425b018f7676272312c95ef10ae35a0c57651cee9f97888dbb9a96735758997e1317f6ae299c5ecd8a8680048008cfa8371ec75fad68875ad0e272ee45a2ac272734c563f39a08367cdb5dc182885e07f753f5c84ca2e016f128707c5b427739794d5f5d338d5e913a9a33579f57838e8bb7e96e7d48409981dd355867710352ed3c96fdfb16e6e22f2dd3ea63c6c23e9618f104bc980393cb3948f8819fbecca4f083398ebf38abf01b4b37d13414b38fa0495206229b4495cd05aa8a42cea4edf84238f2d5b0e0ac14dd418f810f748285f6f025fc678b444cb4e95cb8ddde74b39377678f7b9dfd44d4bc751fbca8904e3ede97e096fc59764013bee3ae71a4336a566ae24c58b919c13735f4707d4eee35cffff5256839e793bd936b614ad31913567b3f94b228cde418ec3cbf8b74edeb2b4ddba6dd633b10cc0a63dc6a207f9fceeb218959b716620090984b8335263464ccf52eb14b82be23935c883498a6ba740246296abf03a39649b16ccbb00cb3b882f582b8fb13902a0f1113d896667381e619725855064aa18ef441f2c41db9192a599f91d1c7641420cd74d2be747ec230ac92c3b9fa0ab469bb0f85c6a52d6a2b2ed7bbf7572867b4ae2b8c4181fa3cef6d44317d1e7818164368689d9688825d54f7b50d727f6da3ed74d26f9e7fac401cf88a9e0398bd8e467fd8c2441922e627372cc89160b132a808d6c274de7ea5b0c5e0d7dfd98286c316b75b0c2dbcff04b093d60b2be862669cc25ed5490db6c006d3bff469fde591485f1a5586938997bd789b2407b4e2f8710c1ad0b4cc77e18fe60eb711e19a65b174dbc6824bfc6e9bf8d05fdf3d9dafd22c2362c41d46affb49942fcba9d514e394fd97917a052ac702f4133a681d94ea947fedc8a60605c2178fc6411e06740421d643e687f50ad22f3f3dae1764ec4966bdf8459d0fc3235535cbbc0cc86b4edc643ac62b3465b51295bc64877f84216e6aabf6bae0855fb9ee842dfd035bd00306d265d7fb9520d8ffb8e1378be6d324984a24a3c7024280f4451a8b661afbe758a250e8322e9d1784c26a741917317f0850110c2cffa09f321ed22ac4337836ce2b9740bb42bf6989c73783f688d8c9b06a7ea71a559a411c984bd1cb9562bbca591a727c2413a12114e206bc62fa99d33a7ccb09f638fe31352f0b1122b8b5c3e7ecbb6fc70f4bf6c0cc88d37d3cc35463267a25cfe8ecf12206eb46075aa2efd94c025ac830e99e12bb1a291c3ef1da0d5a6dd3cdfe2aa1c3e337a4f35fa8675d82ef0cf82ac1a118050507dffa97c5ed86529948b1dd4d9ed11342469327fe3014ff3d2b40d22246ca5880dabe9482b86477dacdee1a876de9472d7f3b90632483bf21653dc90ae0c29eb047d19ae498af1ba2b69052aa2dbe99570010b516ba8f542581014695f4b316b1881ca963711a3dc7f85438acaf018d751688b178c4ae141f9c97a186751531f47fc6d724c34dd3f750cf3767ba590c66d8fa810d2108d9f9726dc715d6ea0591e34d24e615d21cf173c80ed5424ef5f67d9e396d701eda260caebfa475e5665a038a5de8fc7c08581d3796bd2ec428ae4fa8e9bec1ad692872bbd3ff318052119b57943ab028df4a4363f7e3958a57d1f80417705fb36bc44ae71821eafb07578bb7711fe954d471fbe85831fa10d01e84fcf92615b3d100e5e343251fc56cb0e2fe647007808bcf9d84fa55e1e21549836e0c54078c76df582ee8947cc528c2f967ed0228cba951820d0e897b5df8c425d4c1e51f832179af42e3d7c9ada256ff701c92ac33d823bbd219c02d40f93d91a7929ed6bf41c473d212f6dcc332e3a3092d68ff06dac41c78c03108efc5d0cd251b0f54e88cb030d08c888e48f97048559f2e3ab4a9626873631d21a1556d3a524c731774807dca394c7b58e647b6e113ac8f850497ce8d44292019dce139052f6d27a82864a95560fb5e99d17e915b1da6c0390ba402ec7533c4fa79098f6d7d37b693cfc0bc91330bb4b17ba04cabffaeeb790e9f1c23cac98f27ad79db8f4d2a6331d31ee42aacd6267ee8e0e8038052dc90f073f00188ba77d526a1918cb4d99e531b27445918ce47bf9440991c915a8f29b74780ba227d4c703817be2e12ee9e2e9838a8c7087701d1b70e221a989a556b89bb04b359e6ce62c391b540813d08df778effa13abe2b2780e0af08c1a77ed76e1d81c428bc7217e8fad95c6772cb62d1a70cfa91ed74e08431587b599c500addc95bf5ef8151086851d70ab11d44fe3d3f8ce224780784306057ea098aaa181d2aa2e5e41f2c4794e47dae20c28155bee4e8b9363838237e4476fe17f4281ac3f0ebf00893041f7fc021bf882b9dfaf479ca5c9e8725fb89dc46ccdb1ce49c125f7fb7cfacdf37982d294d7b405ddbac92fd225debcda764f7472c9d201c68d68e33fc8ee99a7693c6ef3973e66574673a4dec92654828581d790bf5475fad7f1496fa79e97de7bfe0776fa77a0bb5274cab5fbdf82ac17b789a80d46397d66406631fc4a503fd6960e6150eecf06dd899aeb67857422da8212e390463fd2ce5156b41141947eed76a7477bc389e4387076fa5deb1763a28fc90385dc8c238caea2a75a5f44b48755ed22f8587ca9193b229ca088bdc672892111d841c73c05d040004e485aac269fcd72b20f2a18eaa86920c0827e11adb783e56cc85ae70ff4aa8c868ad23ad506013e879b9f5ab15641286e9590d65aea20d9b262039972bb853bd689bf914048872ee393b10ac927c8fa9b26de97388b42d4a586d54f6a91247fdde5c99520ecf742a5e819aa991052959fe429075b61942d1c034552267fc5c5ea86ff2f132e84a6e35469070d01b0e3cd9ee4068450e395b673907a73d014185abaad882e4e97597475727527d17f1c05fd316477ee41fdcb3a8a77b6d966370b281afdb8003616be5afc4e8c14b40f629e1081a92d6e2c88b3099087af42a23ece466e3881d6567a3a1a13ee0ea156f7e0b233c576cc3cec90ef923e31db5de15b5d5389acca3647bee444397ed7bdff9d306ebd978ffe264913711808f630bf43ed8ded1cad020b72c910a520728bc27bc50e194bbed19a46d73f4cc38b900b05f5ad1093c2212afa8150e92caf85b760f3550578e72b0a4d969d7adcc03884fb144505957e2a09678c3a548a6a0a47f7e0fce4bee7b897cc1166ae77580d996fec94832415575783f7a612bbf45cae588388a802872a66a904e4801a3b472d5d0e8cd7ab881f28f57e4aa920b721fcb636897d395be2deb0fa0fa64a596ad26b02aeb580c47c557b21619fc2b46a1b9f7b74d30a337232f691ae19a936c13089fb4ac9386326536b4c15039260267c28e8a6b0a95dc6c7d6d8a101c670b371f64c12c0d05d691d177b57936dbca2d210138bdbe9b6aff8de198e7b0e596f1cfab27993a2058163781b62260743b6f81a063b9968156a76be25339a0932a3d3b67cf567c05e175e07ca2e9ef7d573bec0312851e1e40c5dba1dd1a758d5fb5aebfd957c031750f2d5d658587a8f4c2169ebacd39241ce153</script>
  <div class="hbe hbe-content">
    <div class="hbe hbe-input hbe-input-default">
      <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass">
      <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass">
        <span class="hbe hbe-input-label-content hbe-input-label-content-default">您好，这里需要密码。</span>
      </label>
    </div>
  </div>
</div>
<script data-pjax src="/blog/lib/hbe.js"></script><link href="/blog/css/hbe.style.css" rel="stylesheet" type="text/css">
      </section>

      
      
        <nav class="article-nav">
          
            <div class="article-nav-item layout-padding">
  <article class="card-container article-nav-card content-padding--primary soft-size--large soft-style--box">
    
    <div class="card-text">
      
        <a href="/blog/2024/02/02/java@js%E6%8A%80%E5%B7%A7%E8%AE%B0%E5%BD%95/" itemprop="url">
          <h2 class="card-text--title text-ellipsis">java@js技巧记录</h2>
        </a>
      
      <div class="card-text--row">Newer</div>
    </div>
  </article>
</div>
          
          
            <div class="article-nav-item layout-padding">
  <article class="card-container article-nav-card content-padding--primary soft-size--large soft-style--box">
    
    <div class="card-text">
      
        <a href="/blog/2023/12/19/goView%E6%96%B0%E5%A2%9E%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/" itemprop="url">
          <h2 class="card-text--title text-ellipsis">goView新增自定义组件</h2>
        </a>
      
      <div class="card-text--row">Older</div>
    </div>
  </article>
</div>
          
        </nav>
      

      <section class="page-message-container layout-padding">
        


  
  

  
  


      </section>
    </div>
    <div class="widget-info">
      <section class="widget-author widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-body">
    
      <img src="/blog/icon.gif" class="soft-size--round soft-style--box" alt="QAQ">
    
    
      <h2>QAQ</h2>
    
    
      <p>贵在坚持</p>
    

    <div class="count-box">
      <div class="count-box--item">
        <svg class="icon icon-article" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M240.51564747 647.74217627h196.07203239c16.59071043 0 30.16492806-13.57421762 30.16492805-30.16492806V165.10332731c0-33.18142087-30.16492806-60.32985613-60.32985612-60.32985611H245.04038668C225.43318342 104.7734712 210.35071939 119.85593522 210.35071939 139.46313845V617.57724821c0 16.59071043 13.57421762 30.16492806 30.16492808 30.16492806z m663.62841731-452.47392089v482.63884894c0 33.18142087-27.14843525 60.32985613-60.32985612 60.32985613H180.18579134c-33.18142087 0-60.32985613-27.14843525-60.32985612-60.32985613V195.26825538c-49.77213131 0-90.49478418 40.72265287-90.49478417 90.49478417v452.4739209c0 49.77213131 40.72265287 90.49478418 90.49478417 90.49478417h286.56681657c16.59071043 0 30.16492806 13.57421762 30.16492807 30.16492807s13.57421762 30.16492806 30.16492805 30.16492806h90.49478418c16.59071043 0 30.16492806-13.57421762 30.16492805-30.16492806s13.57421762-30.16492806 30.16492807-30.16492807h286.56681657c49.77213131 0 90.49478418-40.72265287 90.49478417-90.49478417V285.76303955c0-49.77213131-40.72265287-90.49478418-90.49478417-90.49478417zM587.41232014 647.74217627h191.54729318c19.60720323 0 34.68966726-15.08246403 34.68966729-34.68966727V134.93839925c0-16.59071043-13.57421762-30.16492806-30.16492808-30.16492805H617.57724821c-30.16492806 0-60.32985613 27.14843525-60.32985612 60.32985611v452.4739209c0 16.59071043 13.57421762 30.16492806 30.16492805 30.16492806z" fill="currentColor"></path>
</svg>
        <span>22</span>
      </div>
      <div class="count-box--item">
        <svg class="icon icon-categories" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M900.3614811 257.09082106h-339.81629553l-67.96326003-101.9448889c-19.41807444-29.12711113-48.54518557-43.69066667-82.52681443-43.69066667H123.6385189c-53.39970333 0-97.09036999 43.69066667-97.09037113 97.09036999v582.54222222c0 53.39970333 43.69066667 97.09036999 97.09037113 97.09037002h776.7229622c53.39970333 0 97.09036999-43.69066667 97.09037113-97.09037002V354.18119104c0-53.39970333-43.69066667-97.09036999-97.09037113-97.09036998z m-97.09036999 242.72592554H220.72888889c-24.27259221 0-48.54518557-24.27259221-48.54518556-48.54518556s24.27259221-48.54518557 48.54518556-48.54518444h582.54222222c24.27259221 0 48.54518557 24.27259221 48.54518556 48.54518444s-24.27259221 48.54518557-48.54518556 48.54518556z" fill="currentColor"></path>
</svg>
        0
      </div>
      <div class="count-box--item">
        <svg class="icon icon-tags" viewBox="0 0 1098 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M283.42180005 272q0-28.38857157-20.09142843-48.48000001t-48.47999998-20.09142842-48.48000002 20.09142842-20.09142846 48.48000001 20.09142846 48.48 48.48000002 20.09142843 48.47999998-20.09142843 20.09142843-48.48zM855.0332285 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.03999997 263.58857157q-20.9142853 19.81714313-48.75428534 19.81714312-28.38857157 0-48.20571468-19.81714312l-383.04-383.58857157q-20.36571468-19.81714313-34.55999999-54.10285688t-14.19428534-62.6742853l0-222.85714313q0-27.84000002 20.36571469-48.20571469t48.2057147-20.36571466l222.85714313 0q28.38857157 0 62.6742853 14.19428529t54.65142842 34.55999999l383.04000001 382.49142843q19.81714313 20.9142853 19.81714314 48.75428532zM1060.74751475 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.04 263.58857157q-20.9142853 19.81714313-48.75428531 19.81714312-19.26857155 0-31.61142843-7.47428531t-28.38857159-24.13714314l251.79428534-251.7942853q19.81714313-19.81714313 19.81714308-48.20571469 0-27.84000002-19.81714308-48.75428531l-383.04000001-382.49142845q-20.36571468-20.36571468-54.65142842-34.55999999t-62.67428532-14.19428534l120 0q28.38857157 0 62.67428532 14.19428534t54.65142842 34.55999999l383.03999998 382.49142845q19.81714313 20.9142853 19.81714314 48.75428531z" fill="currentColor"></path>
</svg>
        8
      </div>
    </div>
  </div>
</section>

      

      
<section class="widet-notice widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-notice" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M512 945.02305225v28.15620663a24.27259221 24.27259221 0 0 1-24.27259221 24.27259335H394.0352a48.54518557 48.54518557 0 0 1-41.74885888-23.78714112l-110.68302222-184.47170332a132.04290333 132.04290333 0 0 1-17.47626667-48.54518557h118.4502511a200.97706667 200.97706667 0 0 1 76.21594113 14.56355556l20.38897777 133.49925888a48.54518557 48.54518557 0 0 0 36.40888888 27.67075555l16.01991111 2.91271112a24.27259221 24.27259221 0 0 1 20.38897778 25.72894889zM997.45185223 463.45481443a194.18074112 194.18074112 0 0 1-38.8361489 116.50844445 24.75804445 24.75804445 0 0 1-36.4088889 0l-34.95253333-34.95253333a24.27259221 24.27259221 0 0 1-2.91271111-30.58346667 97.09036999 97.09036999 0 0 0 0-106.79940665 24.27259221 24.27259221 0 0 1 2.91271111-30.58346666l34.95253333-34.95253334a24.75804445 24.75804445 0 0 1 18.93262223-7.28177777 26.2144 26.2144 0 0 1 17.47626667 9.70903665A194.18074112 194.18074112 0 0 1 997.45185223 463.45481443z m-194.18074112-388.36148111v776.72296335a48.54518557 48.54518557 0 0 1-48.54518556 48.54518443h-28.64165888a48.54518557 48.54518557 0 0 1-33.98163001-14.07810332l-145.63555556-143.20829668A291.27111111 291.27111111 0 0 0 342.57730333 657.63555556H172.18370333a145.63555556 145.63555556 0 0 1-145.63555556-145.63555556v-97.09036999a145.63555556 145.63555556 0 0 1 145.63555556-145.63555556h170.3936a291.27111111 291.27111111 0 0 0 206.31703779-85.43952668l145.63555555-143.20829554a48.54518557 48.54518557 0 0 1 33.98162888-14.07810446H754.72592555a48.54518557 48.54518557 0 0 1 48.54518556 48.54518555z" fill="currentColor"></path>
</svg>
    <span>NOTICE</span>
  </div>
  <div class="widget-body">
    <p>flex-block主题部分重构，详情查看https://github.com/miiiku/flex-block</p>
  </div>
</section>


      <section class="widget-categorys widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-categories" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M900.3614811 257.09082106h-339.81629553l-67.96326003-101.9448889c-19.41807444-29.12711113-48.54518557-43.69066667-82.52681443-43.69066667H123.6385189c-53.39970333 0-97.09036999 43.69066667-97.09037113 97.09036999v582.54222222c0 53.39970333 43.69066667 97.09036999 97.09037113 97.09037002h776.7229622c53.39970333 0 97.09036999-43.69066667 97.09037113-97.09037002V354.18119104c0-53.39970333-43.69066667-97.09036999-97.09037113-97.09036998z m-97.09036999 242.72592554H220.72888889c-24.27259221 0-48.54518557-24.27259221-48.54518556-48.54518556s24.27259221-48.54518557 48.54518556-48.54518444h582.54222222c24.27259221 0 48.54518557 24.27259221 48.54518556 48.54518444s-24.27259221 48.54518557-48.54518556 48.54518556z" fill="currentColor"></path>
</svg>
    <span>CATEGORYS</span>
  </div>
  <div class="widget-body">
    <ul class="categorys-list">
      
    </ul>
  </div>
</section>

      <section class="widget-tags widget-item  layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-tags" viewBox="0 0 1098 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M283.42180005 272q0-28.38857157-20.09142843-48.48000001t-48.47999998-20.09142842-48.48000002 20.09142842-20.09142846 48.48000001 20.09142846 48.48 48.48000002 20.09142843 48.47999998-20.09142843 20.09142843-48.48zM855.0332285 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.03999997 263.58857157q-20.9142853 19.81714313-48.75428534 19.81714312-28.38857157 0-48.20571468-19.81714312l-383.04-383.58857157q-20.36571468-19.81714313-34.55999999-54.10285688t-14.19428534-62.6742853l0-222.85714313q0-27.84000002 20.36571469-48.20571469t48.2057147-20.36571466l222.85714313 0q28.38857157 0 62.6742853 14.19428529t54.65142842 34.55999999l383.04000001 382.49142843q19.81714313 20.9142853 19.81714314 48.75428532zM1060.74751475 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.04 263.58857157q-20.9142853 19.81714313-48.75428531 19.81714312-19.26857155 0-31.61142843-7.47428531t-28.38857159-24.13714314l251.79428534-251.7942853q19.81714313-19.81714313 19.81714308-48.20571469 0-27.84000002-19.81714308-48.75428531l-383.04000001-382.49142845q-20.36571468-20.36571468-54.65142842-34.55999999t-62.67428532-14.19428534l120 0q28.38857157 0 62.67428532 14.19428534t54.65142842 34.55999999l383.03999998 382.49142845q19.81714313 20.9142853 19.81714314 48.75428531z" fill="currentColor"></path>
</svg>
    <span>TAGS</span>
  </div>
  <div class="widget-body">
    <div class="tags-cloud">
      <a href="/blog/tags/Activiti/" style="font-size: 13.33px;" class="tags-cloud-3">Activiti</a> <a href="/blog/tags/Nginx/" style="font-size: 10px;" class="tags-cloud-0">Nginx</a> <a href="/blog/tags/PG%E6%95%B0%E6%8D%AE%E5%BA%93/" style="font-size: 13.33px;" class="tags-cloud-3">PG数据库</a> <a href="/blog/tags/goView/" style="font-size: 13.33px;" class="tags-cloud-3">goView</a> <a href="/blog/tags/java/" style="font-size: 20px;" class="tags-cloud-10">java</a> <a href="/blog/tags/vue/" style="font-size: 16.67px;" class="tags-cloud-7">vue</a> <a href="/blog/tags/%E5%AF%BC%E5%87%BAExcel/" style="font-size: 16.67px;" class="tags-cloud-7">导出Excel</a> <a href="/blog/tags/%E6%8A%A5%E9%94%99/" style="font-size: 10px;" class="tags-cloud-0">报错</a>
    </div>
  </div>
</section>
    </div>
  </article>
</div>

    <!-- footer container -->
<footer id="footer" class="footer">
  <div class="footer-container">
    
    <div class="social-icons">
      
        
      
        
      
        
      
        
          <a href="https://github.com/miiiku/" class="soft-size--primary soft-style--box" target="_blank" rel="noopener noreferrer">
            <svg class="icon icon-github" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M64.6 512c0 195.6 125.4 361.9 300.1 422.9 23.5 5.9 19.9-10.8 19.9-22.2v-77.6c-135.8 15.9-141.3-74-150.5-89-18.5-31.5-61.9-39.5-49-54.5 31-15.9 62.5 4 98.9 58 26.4 39.1 77.9 32.5 104.1 26 5.7-23.5 17.9-44.5 34.7-60.9-140.7-25.2-199.4-111.1-199.4-213.3 0-49.5 16.4-95.1 48.4-131.8-20.4-60.6 1.9-112.4 4.9-120.1 58.2-5.2 118.5 41.6 123.3 45.3 33.1-8.9 70.8-13.7 112.9-13.7 42.4 0 80.3 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.4-43.9 2.9 7.7 24.7 58.3 5.5 118.1 32.5 36.8 49 82.8 49 132.4 0 102.3-59 188.3-200.2 213.2 23.5 23.3 38.1 55.5 38.1 91.1v112.7c0.8 9 0 17.9 15.1 17.9C832.7 877 960.4 709.4 960.4 512.1c0-247.5-200.6-447.9-447.9-447.9C265 64.1 64.6 264.5 64.6 512z"></path>
</svg>
          </a>
        
      
        
          <a href="https://twitter.com/guanquanhong" class="soft-size--primary soft-style--box" target="_blank" rel="noopener noreferrer">
            <svg class="icon icon-twitter" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M962.285714 233.142857q-38.285714 56-92.571429 95.428571 0.571429 8 0.571429 24 0 74.285714-21.714286 148.285714t-66 142-105.428571 120.285714-147.428571 83.428571-184.571429 31.142857q-154.857143 0-283.428571-82.857143 20 2.285714 44.571429 2.285714 128.571429 0 229.142857-78.857143-60-1.142857-107.428571-36.857143t-65.142857-91.142857q18.857143 2.857143 34.857143 2.857143 24.571429 0 48.571429-6.285714-64-13.142857-106-63.714286t-42-117.428571l0-2.285714q38.857143 21.714286 83.428571 23.428571-37.714286-25.142857-60-65.714286t-22.285714-88q0-50.285714 25.142857-93.142857 69.142857 85.142857 168.285714 136.285714t212.285714 56.857143q-4.571429-21.714286-4.571429-42.285714 0-76.571429 54-130.571429t130.571429-54q80 0 134.857143 58.285714 62.285714-12 117.142857-44.571429-21.142857 65.714286-81.142857 101.714286 53.142857-5.714286 106.285714-28.571429z"></path>
</svg>
          </a>
        
      
    </div>
     
    <p>&copy; 2024 <a href="/" target="_blank">QAQ</a></p>

    

    <p>Powered by <a href="https://hexo.io" target="_blank" rel="noopener noreferrer">Hexo</a> Theme - <a href="https://github.com/miiiku/flex-block" target="_blank" rel="noopener noreferrer author">flex-block</a></p>

    <p>
      <a href="javascript:;" id="theme-light">🌞 浅色</a>
      <a href="javascript:;" id="theme-dark">🌛 深色</a>
      <a href="javascript:;" id="theme-auto">🤖️ 自动</a>
    </p>
  </div>
</footer>
  </div>

  <div class="back-to-top-fixed soft-size--round soft-style--box">
    <svg class="icon icon-back-to-top" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
      <path d="M725.333333 426.666667c-12.8 0-21.333333-4.266667-29.866667-12.8l-213.333333-213.333333c-17.066667-17.066667-17.066667-42.666667 0-59.733333s42.666667-17.066667 59.733333 0l213.333333 213.333333c17.066667 17.066667 17.066667 42.666667 0 59.733333C746.666667 422.4 738.133333 426.666667 725.333333 426.666667z"></path>
      <path d="M298.666667 426.666667c-12.8 0-21.333333-4.266667-29.866667-12.8-17.066667-17.066667-17.066667-42.666667 0-59.733333l213.333333-213.333333c17.066667-17.066667 42.666667-17.066667 59.733333 0s17.066667 42.666667 0 59.733333l-213.333333 213.333333C320 422.4 311.466667 426.666667 298.666667 426.666667z"></path>
      <path d="M512 896c-25.6 0-42.666667-17.066667-42.666667-42.666667L469.333333 170.666667c0-25.6 17.066667-42.666667 42.666667-42.666667s42.666667 17.066667 42.666667 42.666667l0 682.666667C554.666667 878.933333 537.6 896 512 896z"></path>
    </svg>
  </div>

  
  <!-- aplayer -->


<!-- dplayer -->


<!-- copy button  -->
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js"></script>

<!-- https://clipboardjs.com/ -->


<script type="text/javascript">
	(function () {
		function getCodeType (elem) {
			const classs = Array.from(elem.classList.values());
			if (classs && classs.length > 1) {
				return classs[1];
			}
			return "plain";
		}

		window.addEventListener("DOMContentLoaded", () => {
			const copyBtnClass = "copy-btn";
			//  instantiate clipboardjs 
			const clipboard = new ClipboardJS('.' + copyBtnClass);

			clipboard.on('success', function (e) {
				console.info('Action:', e.action);
				console.info('Text:', e.text);
				console.info('Trigger:', e.trigger);
				if (e.trigger) {
					e.trigger.classList.add("copied");
					setTimeout(() => {
						e.trigger.classList.remove("copied");
					}, 3000);
				}
				e.clearSelection();
			});

			clipboard.on('error', function (e) {
				console.error('Action:', e.action);
				console.error('Trigger:', e.trigger);
			});

			document.querySelectorAll('figure.highlight').forEach((elem) => {
				const codeContent = elem.querySelector("td.code");
				const copyButton = document.createElement('button');
				copyButton.setAttribute("class", copyBtnClass);
				copyButton.setAttribute("title", "Copy Code");
				copyButton.setAttribute("data-clipboard-text", codeContent.innerText);
				elem.insertBefore(copyButton, elem.children[0]);
			});
		})
	})();
</script>








  


  


  




<script src="/blog/js/script.js"></script>


  
  <!-- 尾部用户自定义相关内容 -->
</body>
</html>
